﻿Imports CapaLogica.CL.Tema
Imports CapaLogica.CL.Usuario


Public Class frmRegistrarModificarTema
    Private idForo As Integer
    Private idTema As Integer
    Private principal As frmForoProfesor

    Public Sub New(ByRef pIdForo As Integer, ByRef pTitulo As String, ByRef pPrincipal As frmForoProfesor)

        ' This call is required by the designer.
        InitializeComponent()
        idForo = pIdForo
        llenarLista(lbxEstudiantesAsociados, GestorUsuario.listarEstudiantesForo(idForo))
        principal = pPrincipal
        bloquearFecha()
        setearLista(lbxEstudiantesSinAsociar)

    End Sub

    Private Sub tsbCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Close()

    End Sub

    Private Sub tsbGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbGuardar.Click

        If validar() Then
            Dim button As DialogResult = MessageBox.Show("¿Desea crear un nuevo Tema?",
                                                                          Me.Text, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)
            If button = DialogResult.Yes Then
                Try
                    GestorTema.registrarTema(txtNombre.Text, txtDescripcion.Text,
                                            dtpFechaFinal.Value, obtenerCalificacion(),
                                            obtenerIdsDeListBox(lbxEstudiantesAsociados),
                                            idForo, cbFechaExp.Checked, txtJustificacion.Text, nudCantMaxAportes.Value)

                    MsgBox("¡El tema ha sido creado!", MsgBoxStyle.Information, "Tema")
                    principal.cargarForo()
                    principal.Visible = True
                    Me.Dispose()
                Catch ex As Exception
                    MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
                End Try

            Else
                MsgBox("¡El tema no ha sido creado!", MsgBoxStyle.Information, "Tema")

            End If
        End If

    End Sub


    Private Function validar() As Boolean
        If txtNombre.Text = "" Then
            MsgBox("Debe ingresar el nombre del tema", MsgBoxStyle.Exclamation, "Error")
            Return False

        ElseIf txtDescripcion.Text = "" Then
            MsgBox("Debe ingresar la descripción del tema.", MsgBoxStyle.Exclamation, "Error")
            Return False

        ElseIf lbxEstudiantesAsociados.Items.Count < 1 And txtJustificacion.Text Is Nothing Then
            MsgBox("Debe seleccionar los estudiantes que tendran acceso al tema.", MsgBoxStyle.Exclamation, "Error")
            Return False

        End If

        Return True
    End Function


    Private Function obtenerCalificacion() As Boolean
        If rbtSi.Checked Then
            Return True
        Else
            Return False
        End If

    End Function

    Private Sub bloquearFecha()
        dtpFechaFinal.Enabled = False
    End Sub

    Private Sub desbloquearFecha()
        dtpFechaFinal.Enabled = True
    End Sub


    Private Sub cbFechaExp_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFechaExp.CheckedChanged
        If cbFechaExp.Checked Then
            desbloquearFecha()
        Else
            bloquearFecha()
        End If
    End Sub

    Private Sub frmRegistrarModificarTema_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        bloquearJustificacion()
    End Sub


    Public Sub bloquearJustificacion()
        txtJustificacion.Enabled = False
    End Sub

    Public Sub desbloquearJustificacion()
        txtJustificacion.Enabled = True
    End Sub


    Private Sub btnAsociarUno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsociarUno.Click
        If lbxEstudiantesAsociados.SelectedIndex > -1 Then
            cambiarElementosDeListas(lbxEstudiantesAsociados, lbxEstudiantesSinAsociar)
            desbloquearJustificacion()
        Else
            MsgBox("Debe seleccionar al menos un estudiante para cambiarlo de lista.", MsgBoxStyle.Exclamation, "Error")
        End If
    End Sub

    Private Sub btnDesasociarUno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDesasociarUno.Click
        If lbxEstudiantesSinAsociar.SelectedIndex > -1 Then
            cambiarElementosDeListas(lbxEstudiantesSinAsociar, lbxEstudiantesAsociados)
            If lbxEstudiantesSinAsociar.Items.Count <> 0 Then
                desbloquearJustificacion()

            Else
                bloquearJustificacion()
            End If
        Else
            MsgBox("Debe seleccionar al menos un estudiante para cambiarlo de lista.", MsgBoxStyle.Exclamation, "Error")
        End If
    End Sub

    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
        principal.cargarForo()
        principal.Visible = True
        Me.Dispose()
    End Sub

End Class